Skip to main content

SQL Kısıtlamaları (Constraints) Kullanımı ve Yönetimi

Meta Açıklaması:
SQL kısıtlamaları (constraints) ile veri bütünlüğü sağlayın.
UNIQUE, CHECK ve PRIMARY KEY gibi kısıtlamaları tablo oluşturma ve ALTER TABLE üzerinden yönetin.


🎯 Bu Rehberde Ne Öğreneceksiniz?

Bu kılavuz, SQL kısıtlamalarını kullanarak veritabanı tablolarına veri doğruluğu kuralları koymayı öğretir.
Aşağıdaki adımları uygulayarak veri bütünlüğünü güçlendireceksiniz:

  • Tablo oluştururken sütun ve tablo seviyesinde kısıtlama tanımlama
  • UNIQUE ve CHECK kullanımı
  • Kısıtlamalara özel isim verme (CONSTRAINT)
  • ALTER TABLE ile kısıtlama ekleme ve silme
  • SHOW CREATE TABLE ile mevcut kısıtlamaları görüntüleme

🧠 Teknik Özet

Amaç: Veri bütünlüğünü koruyarak yanlış, eksik veya tekrar eden verilerin eklenmesini engellemek.
Kapsam:

  • Sütun seviyesinde (column-level) ve tablo seviyesinde (table-level) constraint tanımlama
  • UNIQUE, CHECK ve PRIMARY KEY türleriyle pratik örnekler
  • ALTER TABLE ile mevcut tablolara constraint ekleme veya silme

⚙️ 1. Ortamı Hazırlama

MySQL’e bağlanın:

ssh [email protected]
mysql -u admin -p

Yeni bir veritabanı oluşturun:


CREATE DATABASE constraintsDB;
USE constraintsDB;

💬 constraintsDB isimli veritabanı oluşturulur ve aktif hale getirilir.


🧩 2. Kısıtlamalarla Tablo Oluşturma

Sütun Seviyesinde Kısıtlama (Column-Level)

Bir kısıtlamayı sütun tanımının hemen ardından ekleyebilirsiniz.


CREATE TABLE calisanBilgileri (
calisanID INT UNIQUE,
adSoyad VARCHAR(30),
telefon INT
);

💬 calisanID sütununa UNIQUE kısıtlaması uygulanır. Aynı ID’ye sahip iki kayıt eklenemez.

Tablo Seviyesinde Kısıtlama (Table-Level)

Tablo seviyesindeki kısıtlamalar birden fazla sütunu kapsayabilir.


CREATE TABLE yarisciBilgileri (
yarisciID INT,
siralama INT,
yarisciAd VARCHAR(30),
CHECK (siralama >= 1)
);

💬 siralama değerinin her zaman 1 veya daha büyük olması sağlanır. Bu, tablo genelinde uygulanan bir CHECK kısıtlamasıdır.


🏷️ 3. Kısıtlamalara Özel İsim Verme

Kısıtlamalara anlamlı bir isim vermek, yönetimi kolaylaştırır.


CREATE TABLE yeniYarisciBilgileri (
yarisciID INT,
siralama INT,
yarisciAd VARCHAR(30),
CONSTRAINT pozitifSiralama CHECK (siralama >= 1)
);

💬 pozitifSiralama adlı constraint, siralama değerinin negatif olmasını engeller.

🔎 Eğer constraint ismini unuttuysanız:


SHOW CREATE TABLE yeniYarisciBilgileri;

💬 Bu komut, tablonun oluşturulma yapısını ve constraint isimlerini gösterir.


🔧 4. Mevcut Kısıtlamaları Yönetme

Yeni Constraint Ekleme


ALTER TABLE calisanBilgileri ADD UNIQUE (adSoyad);

💬 adSoyad sütununa UNIQUE kısıtlaması eklenir.

Kısıtlamaya özel isim de verebilirsiniz:


ALTER TABLE yarisciBilgileri
ADD CONSTRAINT essizID UNIQUE (yarisciID);

💬 essizID adlı UNIQUE kısıtlaması eklenir. ⚠️ Eğer tabloda tekrar eden kayıtlar varsa işlem başarısız olur.

Constraint Silme


ALTER TABLE yarisciBilgileri DROP CONSTRAINT essizID;
💬 essizID adlı constraint kaldırılır.


❓ Sıkça Sorulan Sorular (SSS)

  1. PRIMARY KEY bir constraint midir?

Evet. PRIMARY KEY, UNIQUE ve NOT NULL kısıtlamalarının birleşimidir. Her tabloda yalnızca bir tane olabilir.

  1. Kısıtlamalar performansı yavaşlatır mı?

Evet, veri ekleme sırasında doğrulama yapıldığı için hafif bir gecikme olabilir. Ancak bu, veri bütünlüğü açısından oldukça faydalıdır.

  1. Sütun ve tablo kısıtlamaları arasındaki fark nedir?

Sütun kısıtlaması sadece o sütunu etkiler. Tablo kısıtlaması birden fazla sütunu referans alabilir.

  1. Kısıtlamalar sadece yeni kayıtları mı kontrol eder?

Hayır. UPDATE işlemleri de kısıtlamalarla doğrulanır. Kuralı ihlal eden güncellemeler reddedilir.

  1. CHECK ve ENUM farkı nedir?

CHECK, koşullu ifadeleri değerlendirir (örnek: yas > 18). ENUM ise sadece belirli sabit değerleri kabul eder örnek:

cinsiyet ENUM('E', 'K').

☁️ Sonuç ve Öneri

SQL kısıtlamaları (constraints), veritabanı bütünlüğünün temelini oluşturur. Bu rehberde UNIQUE, CHECK ve PRIMARY KEY gibi kısıtlamaları nasıl tanımlayacağınızı, isimlendireceğinizi ve yöneteceğinizi öğrendiniz.

💡 Kısıtlamaları Rabisu Bulut platformundaki yönetilen MySQL hizmetinizde test ederek, uygulamalarınızın veri güvenliğini garanti altına alabilirsiniz.